﻿using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace C_高级编程
{
    //元特性： 对特性的定义进行描述的特性，叫元特性
    [AttributeUsage(AttributeTargets.All)]   //此特性标注特性的使用范围
    [Author("于冰")]
    //定义特性的类名要以Attribute结尾
    public class MyDescriptionAttribute:Attribute//定义特性的类要继承Attribute类
    {
        public string Name { set; get; }
    }
    

    [Description("产品类")]
    public class Product
    {
            [MyDescription(Name ="产品名称3")]
            public string? PrpductName { get; set; }
    }


    //特性本质就是一个类

    //测试获取自定义属性
    public class testAttrbute
    {
        public void test()
        { 
            Type type1 =typeof(Product);
            //获取指定属性
            var propertyInfo = type1.GetProperty("PrpductName");
            //获取属性上标注的自定义特性
            var coustomerAttribute = propertyInfo.GetCustomAttribute(typeof(MyDescriptionAttribute)) as MyDescriptionAttribute;
            Console.WriteLine(coustomerAttribute.Name);
        }
    }
}
